package com.jingdianjichi.subject.infra.rpc.interceptor;

import com.jingdianjichi.subject.infra.rpc.util.LoginUtil;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import lombok.extern.slf4j.Slf4j;

/**
 * Feign拦截器，用于在Feign请求中添加登录用户的token
 *
 * 该拦截器会在每个Feign请求中添加一个token头，值为当前登录用户的ID。
 * 这在需要在微服务之间传递登录状态的场景中非常有用。
 *
 * @author: YUMIGUTOUTANG
 * @date: 2025/9/19
 */
@Slf4j
public class FeignInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate requestTemplate) {
        // 1. 从线程本地变量中获取token
        log.info("Feign拦截器，添加当前登录用户ID到请求头中: {}", LoginUtil.getLoginId());
        String token = LoginUtil.getLoginId();
        // 2. 加入到请求头中
        requestTemplate.header("loginId", token);
    }

}
